﻿//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using System.Data;
//using System.Data.Common;
//using System.Data.SqlClient;

//using MySql.Data.MySqlClient;

//namespace Helper.Database
//{
//    public interface IDbProvider
//    {
//        DbConnection CreateConnection();
//        DbCommand CreateCommand();
//        DbDataAdapter CreateDataAdapter();
//        DbParameter CreateParameter();
//    }

//    internal class SqlProvider : IDbProvider
//    {
//        public DbConnection CreateConnection()
//        {
//            return new SqlConnection();
//        }

//        public DbCommand CreateCommand()
//        {
//            return new SqlCommand();
//        }

//        public DbDataAdapter CreateDataAdapter()
//        {
//            return new SqlDataAdapter();
//        }

//        public DbParameter CreateParameter()
//        {
//            return new SqlParameter();
//        }
//    }
//    internal class MySqlProvider : IDbProvider
//    {
//        public DbConnection CreateConnection()
//        {
//            return new MySqlConnection();
//        }

//        public DbCommand CreateCommand()
//        {
//            return new MySqlCommand();
//        }

//        public DbDataAdapter CreateDataAdapter()
//        {
//            return new MySqlDataAdapter();
//        }

//        public DbParameter CreateParameter()
//        {
//            return new MySqlParameter();
//        }
//    }


//    public abstract class NDbHelper
//    {
//        protected IDbProvider _provider { get; set; }
//        protected string _connStr { get; set; }
//        public DbConnection Connection { get; set; }

//        protected DbConnection CreateConnection()
//        {
//            DbConnection conn = _provider.CreateConnection();
//            conn.ConnectionString = _connStr;
//            conn.Open();
//            return conn;
//        }

//        protected virtual DbDataReader ExecuteReader(string sql, params DbParameter[] sps)
//        {
//            using (DbConnection conn = CreateConnection())
//            {
//                if (conn.State != ConnectionState.Open) conn.Open();
//                using (DbCommand cmd = CreateCmdText(sql, conn))
//                {
//                    DbDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
//                    return dr;
//                }
//            }
//        }

//        public virtual int ExecuteNonQuery(string sql, params DbParameter[] sps)
//        {
//            using (DbConnection conn = CreateConnection())
//            {
//                using (DbCommand cmd = CreateCmdText(sql, conn))
//                {
//                    return cmd.ExecuteNonQuery();
//                }
//            }
//        }

//        public virtual DataTable ExecuteDataTable(string sql, params DbParameter[] sps)
//        {
//            DataTable dt = new DataTable();
//            DbDataAdapter adpa = _provider.CreateDataAdapter();
//            using (DbConnection conn = CreateConnection())
//            {
//                adpa.SelectCommand = CreateCmdText(sql, conn);
//                adpa.Fill(dt);
//            }
//            return dt;
//        }

//        public DbCommand CreateCmdText(string sql, DbConnection conn, params DbParameter[] sps)
//        {
//            DbCommand cmd = _provider.CreateCommand();
//            cmd.Connection = conn;
//            cmd.CommandText = sql;
//            cmd.CommandType = CommandType.Text;
//            if (sps != null)
//                cmd.Parameters.AddRange(sps);
//            return cmd;
//        }

//    }


//    public class NSqlHelper : NDbHelper
//    {
//        public NSqlHelper(string connStr)
//        {
//            base._connStr = connStr;
//            base._provider = new SqlProvider();
//            this.Connection = base.CreateConnection();
//        }
//    }

//    //public class MySqlHelper : NDbHelper
//    //{
//    //    public MySqlHelper(string connStr)
//    //    {
//    //        base._connStr = connStr;
//    //        base._provider = new MySqlProvider();
//    //    }
//    //}
//}
